Non-volatile semiconductor memory devices are fundamental building blocks in prior art computer system designs. The primary mechanism by which data is stored in non-volatile memory is the memory cell. Many prior memory technologies provide a maximum storage capacity of one bit, or two states, per cell. Semiconductor memory cells having more than two possible states are known in the prior art.
One prior flash memory cell is comprised of a single field effect transistor ("FET") including a select gate, a floating gate, a source, and a drain. Information is stored in the flash cell by altering the amount of charge on the floating gate, which causes the threshold voltage V.sub.t of the flash cell to be varied. The flash cell is read by applying a select voltage via a wordline to the select gate. The amount of current which the flash cell conducts when the select voltage is applied is determined by the threshold voltage V.sub.t of the flash cell.
The flash cell can theoretically possess a separate identifiable state for each electron that is added to the floating gate. Practically speaking, however, prior flash cells most often have only two possible states because of inconsistencies in flash cell structure, charge loss over time, thermal considerations and inaccuracies in sensing the charge on the floating gate that affect the ability to determine the data stored in the flash cell. These two states are typically termed "programmed" and "erased," and each state corresponds to a range of V.sub.t voltages. To distinguish between the two possible states, the states are separated by a separation range, which is a range of V.sub.t voltages between the states. When a flash cell is read, the V.sub.t of the flash cell is compared to a reference flash cell having threshold voltage V.sub.t set to a reference voltage that is a voltage in the separation range. A single comparator typically makes the comparison and outputs the result. If the flash cell is programmed, excess electrons are trapped on the floating gate, and the threshold voltage V.sub.t of flash cell has increased such that the selected flash cell conducts less drain-source current than the reference flash cell. The programmed state of the prior flash cell is typically indicated by a logic 0. If the prior flash cell is erased, little or no excess electrons are on the floating gate, and the flash cell conducts more drain-source current than the reference cell. The erased state of the prior flash cell is typically indicated by a logic 1.
Assuming that the flash cell is initially in the erased state, the flash cell is programmed by placing charge on the floating gate such that threshold voltage V.sub.t of the flash cell is increased. Typical prior flash cells are programmed via hot electron injection by applying a source voltage to the source of the flash cell, a programming voltage to the drain of the flash cell, and a voltage to the select gate of the flash cell sufficient to change the amount of charge stored by the flash cell. The source voltage is typically system ground. The programming operation is typically controlled by a control engine or write state machine. Other memory technologies similarly program the memory cell by varying the amount of charge stored in a storage element similar to the floating gate of the flash cell.
For prior art single-bit flash cells, write verify schemes are used to monitor the amount of charge stored in the floating gate of the flash cell when programming the flash cell to insure that the flash cell is, in fact, placed in the "programmed" state and not underprogrammed. Write verify schemes typically involve a series of interleaved write and read operations in which the flash cell is alternately written to and read from to determine whether additional write steps are required. One prior art write verify scheme performs the read operation using a program verify reference cell having its V.sub.t set to a voltage that defines the beginning of the programmed state of the flash cell. Overprogramming is typically not a concern because there are no states beyond the programmed state for single-bit flash cells.
For flash cells having more than two states, the write verify scheme must ensure that the flash cell is neither underprogrammed nor overprogrammed. An underprogrammed flash cell is a flash cell having a threshold voltage V.sub.t that less than the range of V.sub.t voltages for the desired state. An overprogrammed flash cell is a flash cell having a threshold voltage V.sub.t that is greater than the range of V.sub.t voltages for the desired state. Underprogramming and overprogramming can be especially troubling when the flash cell is programmed to have a V.sub.t voltage that lies within a separation range between states. When the V.sub.t of a flash cell is in the separation range it is difficult to reliably determine the data stored in the flash cell.